\documentclass[]{article}
\usepackage{booktabs}
\usepackage{geometry} 		% 設定邊界
\geometry{
  top=1in,
  inner=0.6in,
  outer=0.6in,
  bottom=0.6in,
  headheight=3ex,
  headsep=2ex
}

\usepackage{titlesec}
\newcommand{\sectionbreak}{\clearpage}

\usepackage[section]{placeins}
\usepackage{float}
% set table unfloat
\usepackage{varioref}

% set table font size
\usepackage[font=normalsize]{caption}     %% make caption in normal size
\usepackage{etoolbox}
\AtBeginEnvironment{longtable}{\footnotesize}{}{}   %% change all longtabu content to foot note size >

%\renewcommand{\topfraction}{0.9}	% max fraction of floats at top
%\renewcommand{\bottomfraction}{0.8}	% max fraction of floats	at bottom
%   Parameters for TEXT pages (not float pages):
%\setcounter{topnumber}{2}
%\setcounter{bottomnumber}{2}
%\setcounter{totalnumber}{4}     % 2 may work better
%\setcounter{dbltopnumber}{2}    % for	2-column pages
%\renewcommand{\dbltopfraction}{0.9}	%	fit big float above 2-col. text
%\renewcommand{\textfraction}{0.07} % allow minimal text w. figs
%   Parameters for FLOAT pages (not text pages):
%\renewcommand{\floatpagefraction}{0.7} % require fuller float pages
% N.B.: floatpagefraction MUST be less than topfraction !!
%\renewcommand{\dblfloatpagefraction}{0.7} % require fuller float pages



\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{amssymb,amsmath}
\usepackage{ifxetex,ifluatex}
\usepackage{fixltx2e} % provides \textsubscript
% use upquote if available, for straight quotes in verbatim environments
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
  \usepackage[utf8]{inputenc}
\else % if luatex or xelatex
  \usepackage{fontspec} 	% 允許設定字體
  \usepackage{xeCJK} 		% 分開設置中英文字型
  %\setCJKmainfont{Microsoft YaHei} 	% 設定中文字型
  \setCJKmainfont{WenQuanYi Zen Hei} 	% 設定中文字型
  \setmainfont{Arial} 	% 設定英文字型
  \setromanfont{Arial} 	% 字型
  \setmonofont{Courier New}
  \linespread{1.2}\selectfont 	% 行距
  \XeTeXlinebreaklocale "zh" 	% 針對中文自動換行
  \XeTeXlinebreakskip = 0pt plus 1pt % 字與字之間加入0pt至1pt的間距，確保左右對整齊
  \parindent 0em 		% 段落縮進
  \setlength{\parskip}{20pt} 	% 段落之間的距離
  \ifxetex
    \usepackage{xltxtra,xunicode}
  \fi
  \defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase}
  \newcommand{\euro}{€}
\fi
% use microtype if available
\IfFileExists{microtype.sty}{\usepackage{microtype}}{}
\usepackage{natbib}
\bibliographystyle{plainnat}



\usepackage{longtable,booktabs}
\let\Oldincludegraphics\includegraphics
\ifxetex
  \usepackage[setpagesize=false, % page size defined by xetex
              unicode=false, % unicode breaks when used with xetex
              xetex]{hyperref}
\else
  \usepackage[unicode=true]{hyperref}
\fi
\hypersetup{breaklinks=true,
            bookmarks=true,
            pdfauthor={Chen Tong; New address: http://www.ehbio.com/Cloud\_Platform/front/; Old address (ImageGP): http://www.ehbio.com/ImageGP/; chent@nrc.ac.cn},
            pdftitle={BIC: Bioinformatics intelligent cloud-platform},
            colorlinks=true,
            urlcolor=blue,
            linkcolor=magenta,
			filecolor=green,
			pdfcreator={Chen Tong}
            pdfborder={0 0 0}}
\urlstyle{same}  % don't use monospace font for urls
\usepackage[normalem]{ulem}
% avoid problems with \sout in headers with hyperref:
\pdfstringdefDisableCommands{\renewcommand{\sout}{}}
\setlength{\parindent}{0pt}
%\setlength{\parskip}{6pt plus 2pt minus 1pt}
\setlength{\emergencystretch}{3em}  % prevent overfull lines
\providecommand{\tightlist}{%
  \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}

\usepackage{titling}
\setlength{\droptitle}{-8em} 	% 將標題移動至頁面的上面

% Remove list identation
\usepackage{enumitem}
\setlist[itemize]{leftmargin=*}
\setlist[enumerate]{leftmargin=*}

% FIgure with section number
\usepackage{amsmath}
\numberwithin{figure}{section}
\numberwithin{table}{section}


\usepackage{fancyhdr}
\usepackage{lastpage}
\pagestyle{fancyplain}

\setcounter{secnumdepth}{5}

%\renewcommand{\sectionmark}[1]{\markboth{#1}} % set the \leftmark

%\setlength{\headheight}{23pt}
\fancypagestyle{plain}{
  \fancyhf{}
  \renewcommand{\headrulewidth}{0pt}
}
\fancyhf{}
\fancyhead[L]{\leftmark}
%\fancyhead[C]{www.ehbio.com}
\fancyhead[R]{
\href{http://www.ehbio.com}{\Oldincludegraphics[width=6cm]{/MPATHB/self/pandoc/ehbio_logo.png}}
}
\fancyfoot[R]{\thepage}

%\pagestyle{plain}
%\titlehead{\centering\includegraphics{/MPATHB/self/pandoc/ehbio_logo.png}}
\title{BIC: Bioinformatics intelligent cloud-platform}
\author{Chen Tong\\\\ New address: \url{http://www.ehbio.com/Cloud_Platform/front/}\\\\ Old address (ImageGP): \url{http://www.ehbio.com/ImageGP/}\\\\ \href{mailto:chent@nrc.ac.cn}{\nolinkurl{chent@nrc.ac.cn}}\\\\ }
\date{2022-04-17}% \\\\

%multidor pic
\usepackage[multidot]{grffile}

\begin{document}
%\maketitle
%{\scshape\LARGE 易汉博基因科技(北京)有限公司 \par}

\begin{titlepage}
  \centering{

  \Oldincludegraphics[width=0.8\textwidth]{/MPATHB/self/pandoc/ehbio_logo.png}
  

  \vspace{4cm}

  {\Huge\bfseries BIC: Bioinformatics intelligent cloud-platform \par}

  \vspace{4cm}
  }
  \begin{minipage}{0.8\linewidth}
  %\centering{
  \begin{flushleft}
  
  
  \vspace{0.5cm}
  	{\scshape\huge Chen Tong \par} 
	\vspace{0.3cm}
  	{\scshape\huge New address: \url{http://www.ehbio.com/Cloud_Platform/front/} \par} 
	\vspace{0.3cm}
  	{\scshape\huge Old address (ImageGP): \url{http://www.ehbio.com/ImageGP/} \par} 
	\vspace{0.3cm}
  	{\scshape\huge \href{mailto:chent@nrc.ac.cn}{\nolinkurl{chent@nrc.ac.cn}} \par} 
	\vspace{0.3cm}
    \end{flushleft}
  %}
  \end{minipage}

  \centering{
  \vfill
  {\LARGE 2022-04-17\par}
  }
\end{titlepage}
%\thispagestyle{fancy}

{
\hypersetup{linkcolor=cyan}
\setcounter{tocdepth}{3}
\tableofcontents
}
\hypertarget{overview-of-bic}{%
\section*{Overview of BIC}\label{overview-of-bic}}


Data visualization plays crucial roles in illustrating results and sharing knowledge among researchers. Though many types of visualization tools are widely used, most of which require enough coding experiences or designed for specialized usages. Here, we present ImageGP, a generalized visualization platform which has been running for nearly 4 years and serving 222,643 visits from all over the world. ImageGP supports generalized plots like lines, bars, scatters, boxes, sets, heatmaps and histograms with up to 40 parameters to meet versatile requirements. ImageGP also contains specialized plots like volcano plot, functional enrichment plot, ChIP-binding profiles and single-cell marker-genes plot for more quickly usages. Each tool of ImageGP contains 1 to 6 demos showing input data formats and parameter combinations. ImageGP is specially optimized for commonly used data matrix formats as inputs and could generate publish-ready plots in multiple formats like PDF, PPTX by just two-clicks.

Input data would be first format checked and required information would be filled in drop-down menu for selection to avoid typo errors. Pasting data tables larger than 1 Mb to text-area of web pages normally would freeze the web browsers. Then the file uploading and management module is developed and uploaded files could be selected and part of contents could be previewed when plotting. The R codes used to generate each plot could be downloaded for reproducible research. Professional users could also tailor the codes for in-depth customization. ImageGP supports data visualization for wet-lab experiment results as well as various types of omics results like scRNA-seq, metagenome, RNA-seq, metabolome with a broad range of users.

ImageGP is freely accessible at \url{http://www.ehbio.com/Cloud_Platform/front/\#/}. R package with all codes, documentations and demo files are also available in the GitHub repository (\url{https://github.com/Tong-Chen/ImageGP}).

\textbf{How to cite?}

ImagGP has served 406,076 individual visits since year 2017 (\url{https://www.revolvermaps.com/livestats/5nn5d3nw217/} ). Searching www.ehbio.com/ImageGP (old version web sites) in Google Scholar shows that ImageGP has been cited by 160 academic articles in biology fields, including 108 citations since 2020.

\begin{center}\includegraphics[width=1\linewidth]{image/BIC_access} \end{center}

\href{https://doi.org/10.1002/imt2.5}{ImageGP: An easy-to-use data visualization web server for scientific researchers. iMeta 1: e5.}

Download citation in \href{http://www.ehbio.com/ImageGP/ImageGP.ris}{RIS} format.

\begin{figure}

{\centering \includegraphics[width=1\linewidth]{image/imageGP_iMETA} 

}

\caption{Published in iMETA.}\label{fig:unnamed-chunk-2}
\end{figure}

(ref:heatmap\_tuiwen) \href{https://mp.weixin.qq.com/s/jDpw7LAJILHi73AwPpBxOQ}{这个热图上面的树是根据系统发育关系画的吗？} \href{https://mp.weixin.qq.com/s/ykp1q7CiyTL2PCK5PuNyzw}{图形解读系列 \textbar{} 给你5个示例，你能看懂常用热图使用吗？}

(ref:pca\_tuiwen) \href{https://mp.weixin.qq.com/s/hDj8_72dBHGRhjZfD9H6Ww}{一文读懂PCA分析 （原理、算法、解释和可视化）} \url{一文学会PCA/PCoA相关统计检验(PERMANOVA)和可视化}

\hypertarget{BIC_intro}{%
\section{BIC (Bioinfo Intelligent Cloud) (also known as ImageGP)}\label{BIC_intro}}

在线平台BIC 是 \href{http://www.ehbio.com/ImageGP}{ImageGP}的重构升级版，重构于2020年初。该平台采用配置文件快速部署工具、生成结果或结果报告。其绘图和分析基于 R 语言(ImageGP 包, 在早期ImageGP脚本的基础上重新进行了封装， \href{https://github.com/Tong-Chen/ImageGP}{GitHub}, \href{https://gitee.com/ct5869/ImageGP}{Gitee})、Python 语言。

左侧导航目前包括：1. Professional plots in seconds; 2. Data transform and extraction; 3. Bioinformatics analysis; 4. Phylogenetic tree view; 5. Text and Video tutorial; 6. Bioinformatics resource

\begin{center}\includegraphics[width=1\linewidth]{image/left_navagation} \end{center}

\hypertarget{functionList}{%
\subsection{功能部分}\label{functionList}}

\hypertarget{professional-plots-in-seconds}{%
\subsubsection{Professional plots in seconds}\label{professional-plots-in-seconds}}

目前支持 16 种基本图形，包括热图、箱线图、富集分析泡泡图、柱状图、火山图、PcOA 分析、Venn 图、直方图、线图等。每种图根据复杂度不同，有数目不一的可调节参数，可组合出很多复合图形。

\begin{center}\includegraphics[width=1\linewidth]{image/professional_plots_in_seconds} \end{center}

\hypertarget{data-transform-and-extraction}{%
\subsubsection{Data transform and extraction}\label{data-transform-and-extraction}}

常见数据格式转换，如宽矩阵转长矩阵、长矩阵转宽矩阵、合并矩阵、矩阵膨胀等功能。

\begin{center}\includegraphics[width=1\linewidth]{image/Data_transform_and_extraction} \end{center}

\hypertarget{bioinformatics-analysis}{%
\subsubsection{Bioinformatics analysis}\label{bioinformatics-analysis}}

生物信息分析部分包括常见的分析工具如 WGCNA共表达网络分析、LEfSe 特征物种鉴定、Limma 差异基因/物种分析、多序列比对、FASTA 处理、RNA 翻译、正则匹配和空间关系等工具，更多工具也在不断完善中。

\begin{center}\includegraphics[width=1\linewidth]{image/bioinformatics_tools} \end{center}

\hypertarget{phylogenetic-tree-view}{%
\subsubsection{Phylogenetic tree view}\label{phylogenetic-tree-view}}

这是最近尝试的基于 D3.js 的交互式图系列，目前只有进化树展示和多序列比对展示，后面会陆续更新更多交互式图。

\begin{center}\includegraphics[width=1\linewidth]{image/phylogenetics_tree} \end{center}

\hypertarget{text-and-video-tutorial}{%
\subsubsection{Text and Video tutorial}\label{text-and-video-tutorial}}

这里包括网站使用帮助、视频教程等内容，正在陆续更新中。

\hypertarget{bioinformatics-resource}{%
\subsubsection{Bioinformatics resource}\label{bioinformatics-resource}}

这里包括常用教程、经典书籍、网址导航等内容，正在陆续更新中。

\hypertarget{ux6bcfux4e2aux5de5ux5177ux57faux672cux4ecbux7ecd}{%
\subsection{每个工具基本介绍}\label{ux6bcfux4e2aux5de5ux5177ux57faux672cux4ecbux7ecd}}

以热图为例，介绍下各个工具页面的组成部分。

第一部分是轮播图，展现每个工具能产生的代表性图、示例数据和参数；给定符合格式的数据、设置指定的参数，即可获得右侧的可视化结果。

第二部分是引用信息。\texttt{BIC} 目前还是 \texttt{Beta} 版，尚未发表，其前身 ImageGP 已发表到 iMeta (\url{https://doi.org/10.1002/imt2.5}) 杂志，使用后请引用，支持工具的进一步发展。

第三部分是 Demo 按钮。通常 Demo 按钮的数目和顺序是跟轮播图一致的，点击 Demo 按钮后，会填入相应的数据、选择相应的参数，直接点击提交就可以获得可视化结果。

\begin{center}\includegraphics[width=1\linewidth]{image/lunbo_citation_demo} \end{center}

第四部分是 Input data参数。支持直接粘贴矩阵到对应的文本框 （不需要注册）或先注册后上传文件再选择已上传的文件 （适合数据比较大，直接粘贴进来会把浏览器卡住的情形；或者多个工具都会用到的数据，上传一次多次使用）。

\begin{center}\includegraphics[width=0.46\linewidth]{image/Paste_input_data} \includegraphics[width=0.46\linewidth]{image/use_already_uploaded_file} \end{center}

第五部分是 更多参数如 Cluster parameters, Data preprocess, Layout等。每个手风琴里面有更多参数可以设置，如果该手风琴里面有必选参数，通常是打开的；如果没有必选参数，默认是收起的。工具为了灵活性供更多人使用，参数比较多，但不是每次分析都会用到这么多参数，常用的只有少部分。

第六部分是 Submit，提交。等待出结果。

第七部分是结果显示，PNG 图，PDF 图，绘图脚本，其它辅助数据。单纯可视化的工具显示简单，分析的工具显示复杂。

\begin{center}\includegraphics[width=1\linewidth]{image/heatmap_demo_result} \end{center}

\hypertarget{ux53c2ux6570ux7684ux63a7ux5236}{%
\subsection{参数的控制}\label{ux53c2ux6570ux7684ux63a7ux5236}}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\item
  参数前面如果有一个红色的星号 (*)表示是必选或必填参数。如果必选或必填参数为空，则不能提交；或提交时也会弹出信息，不允许提交。
\item
  参数后面都有一个符号 (i)，鼠标放上去后会悬浮显示这个参数的解释。这是了解这个参数的关键信息。
\item
  凡是有改动的参数，都会添加黄色背景以示区别。比如点击 Demo后，会看的一些参数飘黄了，不要害怕，只是提示你 Demo 对这些参数做了修改。
\end{enumerate}

\begin{center}\includegraphics[width=1\linewidth]{image/parameter_required_tooltips} \end{center}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\setcounter{enumi}{3}
\tightlist
\item
  参数的智能控制：

  \begin{enumerate}
  \def\labelenumii{\arabic{enumii}.}
  \tightlist
  \item
    点击\texttt{Check\ data}之前，所有下方参数都不可用。需要先确保数据格式无误、\texttt{Check\ data} 通过后，才可以选择更多参数。
  \item
    点击\texttt{Check\ data}后，也会存在部分参数不可用的情况。这是因为参数之间存在着级联控制。如热图聚类，如果没有选要做聚类、则聚类方法、距离计算方法不可选，选了也没用。看到一个参数不可用，如果不知道是做啥的或用不到，就可以大胆的忽略。如果想用，却发现用不了，就要找下其相关参数有没有设置。
  \item
    部分参数为下拉，主要是选择数据矩阵中的列名字、列的内容时会用到。这样一来可以避免输入错误，二来也给了一个提示这个参数应该提供什么信息。
  \item
    颜色参数之间存在互斥。选择颜色集合和自定义取色两个只有一个处于可选状态，清空一个选项，另一个选项即可用。
  \end{enumerate}
\end{enumerate}

\hypertarget{ux6570ux636eux683cux5f0fux6548ux9a8c}{%
\subsection{数据格式效验}\label{ux6570ux636eux683cux5f0fux6548ux9a8c}}

数据格式效验主要包括几个内容：

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  数据矩阵的列分割符是否为单个\texttt{TAB}键。
\item
  数据矩阵的每一行列数是否相等。这也是常见问题。
\item
  矩阵的列名字是否有特殊字符。
\item
  两个数据矩阵的信息是否匹配。
\item
  宽矩阵是否第一列有无重复值、除了第一行和第一列其它元素是否都为数字。
\end{enumerate}

\begin{center}\includegraphics[width=1\linewidth]{image/error_info1} \end{center}

检测不通过的都会给出提示，请仔细阅读提示信息，改正数据后再提交。

\hypertarget{ux5faeux4fe1ux6c42ux52a9}{%
\subsection{微信求助}\label{ux5faeux4fe1ux6c42ux52a9}}

加微信 shengxinbaodian 为好友，备注 ImageGP，加入 ImageGP 讨论群，更方便解决遇到的问题。

\hypertarget{boxplot}{%
\section{Boxplot 箱线图}\label{boxplot}}

\hypertarget{geneexprboxplot}{%
\subsection{无代码绘制基因表达箱线图}\label{geneexprboxplot}}

给定一个基因表达矩阵和样本分组信息，如何绘制样品整体表达箱线图、单个或多个基因表达箱线图。

\begin{itemize}
\tightlist
\item
  \href{\%22data/ehbio.simplier.DESeq2.normalized.rlog.xls\%22}{ehbio.simplier.DESeq2.normalized.rlog.xls}
\item
  \href{\%22data/sampleFile.txt\%22}{sampleFile.txt}
\end{itemize}

\begin{verbatim}
##                id untrt_N61311 untrt_N052611 untrt_N080611 untrt_N061011
## 1 ENSG00000109906          5.3           5.2           5.1           6.0
## 2 ENSG00000112936          8.6           8.5           9.7           8.4
## 3 ENSG00000152583          7.0           7.4           7.2           7.2
## 4 ENSG00000096060          8.7           8.9           9.3           8.4
## 5 ENSG00000226715          9.0           7.4           4.7           4.9
## 6 ENSG00000002933          9.8           8.7           6.2           6.9
##   trt_N61311 trt_N052611 trt_N080611 trt_N061011
## 1        9.2         8.9         8.4         9.6
## 2       12.0        10.6        11.8        10.8
## 3       10.6        10.3        10.0        10.6
## 4       11.9        12.1        11.6        11.7
## 5        9.0         7.8         4.6         4.8
## 6       10.1         8.9         5.9         7.2
\end{verbatim}

\begin{verbatim}
##              ID conditions individual    SV1
## 1  untrt_N61311      untrt     N61311 -0.101
## 2 untrt_N052611      untrt    N052611  0.018
## 3 untrt_N080611      untrt    N080611 -0.429
## 4 untrt_N061011      untrt    N061011  0.535
## 5    trt_N61311        trt     N61311 -0.125
## 6   trt_N052611        trt    N052611  0.036
\end{verbatim}

\hypertarget{geneexprboxplotdata}{%
\subsubsection{获取示例数据}\label{geneexprboxplotdata}}

我们从中截取前面4行作为演示例子。

\begin{center}\includegraphics[width=1\linewidth]{image/FirstForLinerlog} \end{center}

\hypertarget{geneexprboxplotwidetolog}{%
\subsubsection{利用工具Wide to Long把表达矩阵转换为长表格}\label{geneexprboxplotwidetolog}}

把数据表粘贴到\url{http://www.ehbio.com/Cloud_Platform/front/\#/analysis?page=b\%27OA\%3D\%3D\%27}的文本输入处，点击\texttt{Check\ data}，确认数据无误，点击\texttt{Submit}获得结果，下载下来，为文件\href{data/bd3ebbe9-935d-4629-82bd-6d134c2aa386.WideToLong.txt}{bd3ebbe9-935d-4629-82bd-6d134c2aa386.WideToLong.txt}。

\begin{center}\includegraphics[width=1\linewidth]{image/FirstForLinerlogWidetolong} \end{center}

转换后文件内容如下：

\begin{center}\includegraphics[width=1\linewidth]{image/FirstForLinerlogWidetolongView} \end{center}

\hypertarget{geneexprboxplotmergematrix}{%
\subsubsection{利用工具Merge Matrixes合并表达信息和样本表}\label{geneexprboxplotmergematrix}}

把上一步获得的长矩阵和最开始的\texttt{sampleFile}粘贴到\url{http://www.ehbio.com/Cloud_Platform/front/\#/analysis?page=b\%27NQ\%3D\%3D\%27}的2个文本域（顺序没有关系），点击\texttt{Check\ data}，确认数据无误；选择共有的列用于合并，如矩阵1的\texttt{variable}列（这个名字是上一步默认生成的，可以修改）和矩阵2的\texttt{Samp}列。图中标黄的为我们修改过的参数。

\begin{center}\includegraphics[width=1\linewidth]{image/mergeLongSampleFIle} \end{center}

合并后获得文件 \href{data/40e4af19-206e-4f64-b21b-d0e78936fee1.matrix_combined.txt}{40e4af19-206e-4f64-b21b-d0e78936fee1.matrix\_combined.txt}，文件内容如下：

\begin{center}\includegraphics[width=1\linewidth]{image/mergeLongSampleFIleView} \end{center}

\hypertarget{geneexprboxplottotal}{%
\subsubsection{绘制样本整体表达箱线图}\label{geneexprboxplottotal}}

把上一步获得的文件粘贴到箱线图绘制工具\url{http://www.ehbio.com/Cloud_Platform/front/\#/analysis?page=b\%27MQ\%3D\%3D\%27}，点击\texttt{Check\ data}，确认数据无误；

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  选择\texttt{variable}列，也就是样本名字列，作为\texttt{X-axis\ variable}；
\item
  选择\texttt{value}列, 也就是表达数据列，作为\texttt{Y-axis\ variable}；
\item
  选择\texttt{conditions}列，也就是样本分组信息列，作为\texttt{Legend\ variable}，默认通过这一列上色作为图例。
\end{enumerate}

点击\texttt{Submit}，就可以获得绘制的图（png，pdf）格式和对应的代码。

\begin{center}\includegraphics[width=1\linewidth]{image/sampleExprColorByConditions} \end{center}

除了看整体，连上单个基因查看下，增加一个参数\texttt{Group\ variable\ for\ lining\ points}，设置为\texttt{id}列，也就是基因名字列。

\begin{center}\includegraphics[width=1\linewidth]{image/sampleExprColorByConditionsLineByGenes} \end{center}

\hypertarget{singleMultipleGeneBoxplot}{%
\subsubsection{绘制单个/多个基因表达小提琴图}\label{singleMultipleGeneBoxplot}}

数据无需变动

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  选择\texttt{id}列，也就是基因名字列，作为\texttt{X-axis\ variable}；
\item
  选择\texttt{value}列, 也就是表达数据列，作为\texttt{Y-axis\ variable}；
\item
  选择\texttt{conditions}列，也就是样本分组信息列，作为\texttt{Legend\ variable}，默认通过这一列上色作为图例。
\end{enumerate}

在\texttt{Layout\ and\ colors}面板下，设置:

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  设置\texttt{Plot\ type}为\texttt{Violin\ plot};
\end{enumerate}

\begin{center}\includegraphics[width=1\linewidth]{image/sampleExprthreegeneseach} \end{center}

\hypertarget{singleGeneViolinPlot}{%
\subsubsection{绘制单个基因表达小提琴图}\label{singleGeneViolinPlot}}

数据无需变动

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  选择\texttt{id}列，也就是基因名字列，作为\texttt{X-axis\ variable}；
\item
  选择\texttt{value}列, 也就是表达数据列，作为\texttt{Y-axis\ variable}；
\item
  选择\texttt{conditions}列，也就是样本分组信息列，作为\texttt{Legend\ variable}，默认通过这一列上色作为图例。
\end{enumerate}

设置\texttt{variable\ order}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  \texttt{X-axis\ variable\ order}为\texttt{ENSG00000109906}，默认带筛选功能，只选择这一个基因绘制；
\item
  设置\texttt{Legend\ variable\ order}为\texttt{untrt,trt}，对照在前，处理在后。
\end{enumerate}

\begin{center}\includegraphics[width=1\linewidth]{image/sampleExprsinglegeneorder} \end{center}

增加统计标记

\begin{center}\includegraphics[width=1\linewidth]{image/sampleExprsinglegeneorderstatistics} \end{center}

通过预设的颜色集修改颜色

\begin{center}\includegraphics[width=1\linewidth]{image/sampleExprsinglegeneorderstatisticschangecolorset} \end{center}

直接选择多个颜色进行上色

\begin{center}\includegraphics[width=1\linewidth]{image/sampleExprsinglegeneorderstatisticschangecolor} \end{center}

这两种修改颜色的方法是互斥的，一次只能用一种，一次也只能用一种。

\begin{center}\includegraphics[width=1\linewidth]{image/Colorselection} \end{center}

\hypertarget{MultipleGeneViolinPlotFacet}{%
\subsubsection{绘制单个/多个基因表达小提琴图(分面)}\label{MultipleGeneViolinPlotFacet}}

数据无需变动

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  选择\texttt{conditions}列，也就是样本分组信息列，作为\texttt{X-axis\ variable}；
\item
  选择\texttt{value}列, 也就是表达数据列，作为\texttt{Y-axis\ variable}；
\item
  选择\texttt{conditions}列，也就是样本分组信息列，作为\texttt{Legend\ variable}，默认通过这一列上色作为图例。
\end{enumerate}

在\texttt{Layout\ and\ colors}面板下，设置

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  设置\texttt{Plot\ type}为\texttt{Violin\ plot};
\item
  设置\texttt{Facet\ variable}为\texttt{id}列，也就是基因名字列，按基因名分面显示。
\end{enumerate}

\begin{center}\includegraphics[width=1\linewidth]{image/sampleExprthreegenesfacet} \end{center}

\hypertarget{volcanoplot}{%
\section{Volcano plot 火山图}\label{volcanoplot}}

\hypertarget{geneexprvolcano}{%
\subsection{无代码绘制差异基因火山图}\label{geneexprvolcano}}

\href{https://mp.weixin.qq.com/s/7ETZ7UYK7MPdIPd-ywwhmg}{Volcano plot \textbar{} 别再问我这为什么是火山图}一文解释了火山图如何解读。不太难看懂，而一旦看懂了，图也就知道怎么绘制了。

假设我们已经有了一个差异基因鉴定后的表格文件 \href{data/590e7b6b-c279-40da-b1d2-1017464cea02.untrt._vs_.trt.results.txt}{590e7b6b-c279-40da-b1d2-1017464cea02.untrt.\_vs\_.trt.results.txt} (看懂这一串无规律的符号做文件名就知道这是我们平台输出的差异分析结果了)，那怎么绘制火山图呢？

\hypertarget{volcanoPlotUploadFile}{%
\subsubsection{上传文件}\label{volcanoPlotUploadFile}}

首先注册个账户。这里不是强制大家注册，只是火山图文件一般比较大，直接粘贴进文本框会导致浏览器卡顿，为了更好的用户体验，建议注册个账户，在个人中心上传 (支持断点续传，大文件也不怕)。

\begin{center}\includegraphics[width=1\linewidth]{image/personalCenter1chinese} \end{center}

\hypertarget{volcanoSelectUploadFile}{%
\subsubsection{绘制火山图}\label{volcanoSelectUploadFile}}

进入到火山图绘制页面\url{http://www.ehbio.com/Cloud_Platform/front/\#/analysis?page=b\%27Nw\%3D\%3D\%27}。

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  \texttt{Input\ way}选择\texttt{Select\ uploaded\ file}；
\item
  选择上传的文件，如果没找到，则刷新下页面再重复此操作。
\end{enumerate}

\begin{center}\includegraphics[width=1\linewidth]{image/selectUploadedDegenefile} \end{center}

选择的文件会在文本域中显示预览（不可修改，但可以复制），点击\texttt{Check\ Data}，核对数据格式没有问题，会激活下方的必选按钮。

\begin{center}\includegraphics[width=1\linewidth]{image/previeandcheckDEgenedata} \end{center}

选择对应的列进行绘制，绘图就是把数据的结构用几何形状表示出来，并用颜色、大小等代表特定的属性展示。

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  从下拉框选择\texttt{log2FoldChange} 指定为 \texttt{Fold\ change\ column}；为什么选这一列，因为这个参数值跟参数名字太像了；
\item
  从下拉框选择\texttt{padj} 指定为 \texttt{Statistical\ significance\ column}；为什么选这一列，因为\texttt{pval}和\texttt{padj}都是统计显著性的指示指标，为了解决\href{https://mp.weixin.qq.com/s/CNiTfMhApZgrbLOXclSMhQ}{总被审稿人提起的多重假设检验校正是什么？}，我们选\texttt{padj}列；
\item
  \texttt{padj}列数值没有进行过转换，这里选择\texttt{Log10\ transform\ significance\ value}。\texttt{Padj}越小转换后的值越大，越在图的上方;
\item
  \texttt{Gene\ expression\ change\ status\ variable}这是一个可选参数，是说文件中是否已经根据某个阈值做了差异基因标记，哪些上调了，哪些下调了，就是这里面的\texttt{level}列，我们选择上；
\item
  如果之前没做过筛选，没有\texttt{level}列也没关系，\texttt{DE\ genes\ filtering\ threshold}参数可以设置筛选阈值，默认为\texttt{0.05,1}，第一个数字\texttt{0.05}表示统计\texttt{pvalue\textless{}0.05}或\texttt{padj\textless{}0.05} (取决于\texttt{Statistical\ significance\ column}的选择)；第二个数字\texttt{1}表示变化倍数，变化倍数取完\texttt{log2}后的绝对值大于\texttt{1}。
\end{enumerate}

\begin{center}\includegraphics[width=1\linewidth]{image/volcanoparameter1} \end{center}

点击提交，出来一个结果;颜色不对，需要调整下。

\begin{center}\includegraphics[width=1\linewidth]{image/colorWrongVolcano1} \end{center}

先设置下\texttt{level}变量的顺序，然后按顺序设置颜色

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  \texttt{Status\ variable\ order}依次选择下拉内容为\texttt{trt\ up,\ untrt\ UP,\ NoDiff};
\item
  \texttt{Customized\ point\ colors}用颜色选择器选择3个颜色
\end{enumerate}

\begin{center}\includegraphics[width=1\linewidth]{image/changeColorVolcano} \end{center}

提交后获得结果，正确了，可以下载PDF格式和相关的R代码

\begin{center}\includegraphics[width=1\linewidth]{image/colorRightVolcano1} \end{center}

上图中的两条垂直虚线和一条水平虚线是参数\texttt{DE\ genes\ filtering\ threshold}控制的，如果你筛选差异基因的标准(生成\texttt{level}列中哪些上调、哪些下调的标准)不是默认标志，则需要修改这个值为你设置的阈值，从而调整线的位置。

也可以设置参数\texttt{Coordinate\ flip}旋转火山图。

\begin{center}\includegraphics[width=1\linewidth]{image/horizontalVolcano} \end{center}

用的不多，但有用户提过这个需求，就加上了。

\begin{center}\includegraphics[width=1\linewidth]{image/horizontalVolcanoresult} \end{center}

\hypertarget{VolcanoPlotLabelGene}{%
\subsubsection{火山图标记基因}\label{VolcanoPlotLabelGene}}

如果想在火山图上标记基因，可以通过文本域\texttt{Sets\ of\ genes\ to\ be\ labeled\ in\ the\ plot}输入一堆要标记的基因 (可以是一列，也可以是多列，要有标题行)。

\begin{center}\includegraphics[width=1\linewidth]{image/labelVolcanoInput2} \end{center}

设置参数如下，因为提供的基因只有1列，\texttt{Label\ column}可以不设置。

\begin{center}\includegraphics[width=1\linewidth]{image/labelVolcanoParameter2} \end{center}

获得结果

\begin{center}\includegraphics[width=1\linewidth]{image/labelVolcanoPreview2} \end{center}

如果想在火山图上标记基因，可以通过文本域\texttt{Sets\ of\ genes\ to\ be\ labeled\ in\ the\ plot}输入一堆要标记的基因 (可以是一列，也可以是多列，要有标题行)。我们的差异基因分析表格中基因的\texttt{ID}为\texttt{ENSEMBLE}编号，如果想用\texttt{Gene\ symbol}或其它编号怎么操作？那就输入多列信息。

\begin{center}\includegraphics[width=1\linewidth]{image/labelVolcanoInput1} \end{center}

设置参数如下，注意\texttt{Label\ column}选择使用\texttt{Symbol}列进行标记。

\begin{center}\includegraphics[width=1\linewidth]{image/labelVolcanoParameter1} \end{center}

获得结果

\begin{center}\includegraphics[width=1\linewidth]{image/labelVolcanoPreview1} \end{center}

\hypertarget{heatmap}{%
\section{Heatmap 热图}\label{heatmap}}

热图是很常见的图形展示方式，在\href{https://mp.weixin.qq.com/s/ykp1q7CiyTL2PCK5PuNyzw}{◾图形解读系列 \textbar{} 给你5个示例，你能看懂常用热图使用吗？}有详细描述。

热图基本原则是用颜色代表数字，让数据呈现更直观、对比更明显。常用来表示不同样品组代表性基因的表达差异、不同样品组代表性化合物的含量差异、不同样品之间的两两相似性。实际上，任何一个表格数据都可以转换为热图展示。

热图通过将数据矩阵中的各个值按一定规律映射为颜色展示，利用颜色变化来可视化比较数据。当应用于数值矩阵时，热图中每个单元格的颜色展示的是行变量和列变量交叉处的数据值的大小；若行为基因，列为样品，则是对应基因在对应样品的表达值；若行和列都为样品，展示的可能是对应的两个样品之间的相关性。

\textbf{注意}：正因为热图应用如此之广，又可以表示很多种不同类型数据。解读热图时不要先入为主，直接就给其定性为表达热图、相关性热图；而是要想看图例、横轴、纵轴，结合图形标题一起解读。

\hypertarget{geneexprheatmap}{%
\subsection{基因表达热图绘制}\label{geneexprheatmap}}

使用的绘图数据是\texttt{DESeq2}标准化后的表达矩阵 \href{data/ehbio.simplier.DESeq2.normalized.rlog.xls}{ehbio.simplier.DESeq2.normalized.rlog.xls}。

\begin{verbatim}
##                id untrt_N61311 untrt_N052611 untrt_N080611 untrt_N061011
## 1 ENSG00000109906          5.3           5.2           5.1           6.0
## 2 ENSG00000112936          8.6           8.5           9.7           8.4
## 3 ENSG00000152583          7.0           7.4           7.2           7.2
## 4 ENSG00000096060          8.7           8.9           9.3           8.4
## 5 ENSG00000226715          9.0           7.4           4.7           4.9
## 6 ENSG00000002933          9.8           8.7           6.2           6.9
##   trt_N61311 trt_N052611 trt_N080611 trt_N061011
## 1        9.2         8.9         8.4         9.6
## 2       12.0        10.6        11.8        10.8
## 3       10.6        10.3        10.0        10.6
## 4       11.9        12.1        11.6        11.7
## 5        9.0         7.8         4.6         4.8
## 6       10.1         8.9         5.9         7.2
\end{verbatim}

截取前15行粘贴进入热图 (\url{http://www.ehbio.com/Cloud_Platform/front/\#/analysis?page=b\%27Ng\%3D\%3D\%27)绘制的文本域}：

每一行是一个基因，每一列是一个样品。

\begin{center}\includegraphics[width=1\linewidth]{image/heatmapInputExpr15} \end{center}

点击\texttt{Check\ data}确认数据无误，点击\texttt{Submit}就可以出图了。

\begin{center}\includegraphics[width=1\linewidth]{image/heatmapPreview1} \end{center}

普普通通一张热图，横坐标重叠一起了，需要调整下，\texttt{Layout}面板下的\texttt{X-axis\ ticks\ rotation\ angle}设置为\texttt{45}度；

\begin{center}\includegraphics[width=1\linewidth]{image/heatmapangle45} \end{center}

再次出图

\begin{center}\includegraphics[width=1\linewidth]{image/heatmapangle45Preview1} \end{center}

最左边的样本名字没有显示完整，调整下图形的宽和高

\begin{center}\includegraphics[width=1\linewidth]{image/heatmapwidthheight} \end{center}

提交后获得结果

\begin{center}\includegraphics[width=1\linewidth]{image/heatmapangle45Preview2} \end{center}

\hypertarget{geneexprclusterheatmap}{%
\subsubsection{基因表达聚类热图绘制}\label{geneexprclusterheatmap}}

聚个类，可能模式更清晰一些。聚类参数有很多，如下图：按行聚类、按列聚类、行列聚类，聚类方法是什么，距离矩阵算法选哪个，我们提供了\texttt{21}种聚类算法，有通用的，有特异用于菌群数据的。

在我们打开聚类之前，这些参数都是禁用状态。这是一个特有设计。在ImageGP中很多依赖性参数都是这么设置的，主要用途就是避免选错、减少选择的慌乱性。参数很多，如果不可选，说明你用不上，也就忽略就好。

\begin{center}\includegraphics[width=1\linewidth]{image/heatmapClusterParameterLocked} \end{center}

我们选择层级聚类\texttt{Hierachical\ cluster}行列聚类\texttt{Column\ \&\ Row}，其它都默认.（选择聚类后，参数不再是灰色蒙版，而是可调了）

\begin{center}\includegraphics[width=1\linewidth]{image/heatmapClusterParameterRowcolumn} \end{center}

提交后获得结果

\begin{center}\includegraphics[width=1\linewidth]{image/heatmapClusterPearson} \end{center}

换一种距离计算算法，默认是\texttt{Pearson}，换成\texttt{Spearman}

\begin{center}\includegraphics[width=1\linewidth]{image/spearmanHeatmapParameter} \end{center}

提交后获得结果 (完全一样，这么一个距离方式，聚类无影响)

\begin{center}\includegraphics[width=1\linewidth]{image/heatmapClusterPearson} \includegraphics[width=1\linewidth]{image/heatmapClusterSpearman} \includegraphics[width=1\linewidth]{image/heatmapClusterEuclidan} \end{center}

\hypertarget{rowcolanno}{%
\subsubsection{增加列注释(也可同时或单独增加行注释)}\label{rowcolanno}}

数据格式和内容如下。

\begin{verbatim}
ID  conditions  individual  sizeFactor  SV1 SV2 SV3
untrt_N61311    untrt   N61311  1.021132476 -0.101  -0.494  -0.316
untrt_N052611   untrt   N052611 1.180398615 0.018   -0.170  0.588
untrt_N080611   untrt   N080611 1.179608275 -0.429  0.376   -0.089
untrt_N061011   untrt   N061011 0.923264178 0.535   0.241   -0.176
trt_N61311  trt N61311  0.893927524 -0.125  -0.496  -0.366
trt_N052611 trt N052611 0.670922884 0.036   -0.151  0.591
trt_N080611 trt N080611 1.396766501 -0.467  0.441   -0.070
trt_N061011 trt N061011 0.946230699 0.533   0.253   -0.162
\end{verbatim}

既然是列注释，那么这个文件就得根表达矩阵的列名字有关系，不然怎么匹配起来呢？

先看一个错误的例子，我们把这个数据粘贴到行注释处 \texttt{Paste\ row\ annotation\ matrix}，看看有什么问题？

\begin{center}\includegraphics[width=1\linewidth]{image/colAnnoAsRowAnnoWrongTips} \end{center}

给我们弹出了一个提示\texttt{错误：Paste\ main\ heatmap\ data\ to\ text\ area的第一列不等于Paste\ row\ annotation\ matrix\ (first\ column\ must\ match\ first\ column\ of\ data\ matrix)的第一列}。 是说数据不匹配。如果您以后也遇到同样问题，就要好好看下是不是粘贴错位置了。

\begin{center}\includegraphics[width=1\linewidth]{image/colAnnoInputHeatmap} \end{center}

没问题了，点击提交去看看结果

\begin{center}\includegraphics[width=1\linewidth]{image/colAnnoClusterHeatmap} \end{center}

结果出来了，列注释加上了。不过图例没显示全，目前的策略只能是加大图片高度或下载\texttt{PDF}格式用\texttt{Adobe\ Illustrator}等软件修改。后续我们修复下，看是否可以多列显示图例。

\hypertarget{heatmapcolor136}{%
\subsubsection{修改热图和注释颜色}\label{heatmapcolor136}}

\begin{center}\includegraphics[width=1\linewidth]{image/heatmapColor} \end{center}

\begin{center}\includegraphics[width=1\linewidth]{image/previewWhiteBlueHeatmap} \end{center}

五一假期了，来一点趣味性的。热图就是把数字转成颜色，我们去网上拿一张五一的图片，转成矩阵，存储到\texttt{wuyi.txt}文件。然后就可以用我们的热图工具或其它工具进行定制自己的``五一快乐了''。

\begin{center}\includegraphics[width=1\linewidth]{image/wuyiData} \end{center}

隐去横轴和纵轴的标记，图例按说也应该隐去的，不过热图通常用不到这个功能，这里就不去改代码了，直接用起来。颜色自己随意设置。

\begin{center}\includegraphics[width=1\linewidth]{image/wuyiParameter1} \end{center}

结果出来了。多个颜色的版本。那么以后自己拿到某个图觉得分辨率低或颜色配色不喜欢，也可以拿来自己配色了。

\begin{center}\includegraphics[width=0.32\linewidth]{image/wuyiPreview1} \includegraphics[width=0.32\linewidth]{image/wuyiPink} \includegraphics[width=0.32\linewidth]{image/wuyiRedGreen} \includegraphics[width=0.32\linewidth]{image/wuyiSpectral} \end{center}

\hypertarget{heatmapclusterorder}{%
\subsubsection{调整聚类分支的顺序}\label{heatmapclusterorder}}

聚类热图根据不同的聚类算法和距离计算方式，获得的热图分支结构会有一些不同。有时，我们也希望能在不改变分支结构的基础上，对热图分支的顺序进行一些调整，这就是推文\href{https://mp.weixin.qq.com/s/otGujyM1J3HPwtBTLdba-g}{聚类热图怎么按自己的意愿调整分支的顺序？}的出发点。

现在这个功能也搬到了BIC平台，具体怎么做呢？

采用之前的绘图数据

\begin{center}\includegraphics[width=1\linewidth]{image/heatmapcluster1} \end{center}

采用默认的绘图参数

\begin{center}\includegraphics[width=1\linewidth]{image/heatmapcluster1Defaultparameter} \end{center}

出来一个热图，看着还不错

\begin{center}\includegraphics[width=1\linewidth]{image/heatmapcluster1Preview} \end{center}

现在我们想调整下列的顺序，习惯上对照组在前，处理组在后，我们加一列权重信息，在不影响层级聚类结构的基础上 （层级聚类中，哪两个/两组样品在同一分支下是不可以改变的，但同一分支下的两个/两组样品谁在左、谁在右是没关系的），权重大的列排在左侧，权重小的列排在右侧。

在\texttt{colWright}列下，加了权重信息。

\begin{verbatim}
ID  conditions  individual  SV1 ColWeight
untrt_N61311    untrt   N61311  -0.101  80
untrt_N052611   untrt   N052611 0.018   100
untrt_N080611   untrt   N080611 -0.429  70
untrt_N061011   untrt   N061011 0.535   90
trt_N61311  trt N61311  -0.125  40
trt_N052611 trt N052611 0.036   60
trt_N080611 trt N080611 -0.467  70
trt_N061011 trt N061011 0.533   50
\end{verbatim}

我们希望排序顺序为:

\begin{verbatim}
untrt_N052611
untrt_N061011
untrt_N61311
untrt_N080611
trt_N080611
trt_N052611
trt_N061011
trt_N61311
\end{verbatim}

拷贝数据、设置参数，主要是

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  Column used for reorder row cluster branches: 选择哪一列作为行聚类排序的权重列
\item
  Column used for reorder column cluster branches：选择哪一列作为列聚类排序的权重列
\item
  Exclude order variable from row annotation：这一列有时是自己编的值，只是拿来美化图，而不希望展示，可以通过该参数隐去
\item
  Exclude order variable from column annotation：这一列有时是自己编的值，只是拿来美化图，而不希望展示，可以通过该参数隐去
\end{enumerate}

\begin{center}\includegraphics[width=1\linewidth]{image/heatmapColOrderRowOrder} \end{center}

提交后获得结果，顺序如我们期望。

\begin{center}\includegraphics[width=1\linewidth]{image/heatmapColOrderRowOrderPreview} \end{center}

调整时如果未达到预期效果，首先看下是不是你想要的顺序改变了分支结构；如果没有改变结构但却依然无效果，则可以尝试加大不同样品权重的差距，获得预期的排序效果。

这是其中一种调整分支顺序的方式，在文章\href{https://mp.weixin.qq.com/s/otGujyM1J3HPwtBTLdba-g}{聚类热图怎么按自己的意愿调整分支的顺序？}还提供了很多种其它排序方式可供参考和使用。

\hypertarget{ux63d0ux53d6ux805aux7c7bux540eux7684ux57faux56e0ux96c6}{%
\subsubsection{提取聚类后的基因集}\label{ux63d0ux53d6ux805aux7c7bux540eux7684ux57faux56e0ux96c6}}

有时在聚类热图中，看到某一个簇的基因有意思，想拿出具体的基因列表。

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  如果基因不是太多，可以增加出图的长度，让图变得很长，显示出每个基因的名字。
\item
  如果基因名字太多，图已经做到很长了，名字还是重叠在一起，怎么办呢？
\end{enumerate}

这里我们提供 2 个方案，供参考。

\hypertarget{ux5bf9ux5c42ux7ea7ux805aux7c7bux6811ux8fdbux884cux6a21ux5757ux5206ux5272ux5b9aux4f4dux57faux56e0ux5728ux54eaux4e2aux6a21ux5757ux4e2d}{%
\paragraph{对层级聚类树进行模块分割，定位基因在哪个模块中}\label{ux5bf9ux5c42ux7ea7ux805aux7c7bux6811ux8fdbux884cux6a21ux5757ux5206ux5272ux5b9aux4f4dux57faux56e0ux5728ux54eaux4e2aux6a21ux5757ux4e2d}}

拷贝数据(\url{data/ehbio.simpler.DESeq2.untrt._vs_.trt.results.xls.top20DEgenes.exprmat.txt})，设置参数.

核心参数：

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  Cut tree (rows): 把行聚类结果切成几个类
\item
  Cut tree (columns): 把列聚类结果切成几个类
\item
  Row clustering cutree results as row annotations: 把行聚类的结果作为行注释标记在图上，这是为了后面更好的对应每个类
\item
  Column clustering cutree results as column annotations: 把列聚类的结果作为列注释标记在图上，这是为了后面更好的对应每个类
\end{enumerate}

\begin{center}\includegraphics[width=1\linewidth]{image/heatmapCutReeClusterAsRowAnno} \end{center}

输出的结果除了图，还有几个表格，解释如下

\begin{center}\includegraphics[width=1\linewidth]{image/heatmapCutReeClusterAsRowAnnoAllResult} \end{center}

打开\texttt{row-cluster}的表格，与图大体对齐，如下,想看哪一部分基因，看着更清楚了：

\begin{center}\includegraphics[width=1\linewidth]{image/heatmapCutReeClusterAsRowAnnoDuiqi} \end{center}

手动定位，拷贝出这一部分基因。

如果模块或基因太多，还是不好定位怎么办？

设置参数:

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  \texttt{Row\ labels\ only\ display\ row\ cluster\ boundary\ items}: 只标记每个行聚类的第一个基因。
\item
  \texttt{Column\ labels\ only\ display\ column\ cluster\ boundary\ items}: 只标记每个列聚类的第一个样品。
\end{enumerate}

\begin{center}\includegraphics[width=1\linewidth]{image/heatmapLabelBoundary} \end{center}

结果如下，每个类的边界基因就定了，再去\texttt{row-cluster}的表格中去寻找基因就可以了。

\begin{center}\includegraphics[width=1\linewidth]{image/heatmapLabelBoundary.result} \end{center}

如果不想聚类，或想标记更多基因，也可以使用下面这个功能，每隔多少位标记 1 个基因。

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  \texttt{Label\ every\ n\ row\ items\ (n\textgreater{}1)}: 每 n 个基因标记一个，标记第 1 个，n+1个，2n+1个，。。。
\item
  \texttt{Label\ every\ n\ column\ items\ (n\textgreater{}1)}: 同上
\end{enumerate}

\begin{center}\includegraphics[width=1\linewidth]{image/heatmapLabelEveryN} \end{center}

结果如下，定位基因就标记上了。

\begin{center}\includegraphics[width=1\linewidth]{image/heatmapLabelEveryN.result} \end{center}

\hypertarget{enrichment_bubbleplot}{%
\section{Enrichment bubble plot 富集分析泡泡图}\label{enrichment_bubbleplot}}

富集分析是生物信息分析中快速了解目标基因或目标区域功能倾向性的最重要方法之一。其中代表性的计算方式有两种：

一是基于筛选的差异基因，采用超几何检验判断上调或下调基因在哪些GO或KEGG或其它定义的通路富集。假设背景基因数目为\texttt{t}，背景基因中某一通路pathway中注释的基因有\texttt{m}个；上调基因有\texttt{k}个，上调基因中落于通路pathway的数目为\texttt{q}。简单来讲就是比较\texttt{q/k}是否显著高于\texttt{m/t}，即上调基因中落在通路pathway的比例是否高于背景基因在这一通路的比例。(实际计算时，是算的\texttt{odds\ ratio}的差异，\texttt{q/(k-q)\ vs\ (m-q)/(t-k-m+q))}。这就是常说的GO富集分析或KEGG富集分析，可以做的工具很多，\href{https://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ==\&mid=2247484456\&idx=1\&sn=bbcd0b5d10ba9312d92b7baae777ccde\&scene=21\#wechat_redirect}{GOEAST}是其中一个最好用的在线功能富集分析工具，数据库更新实时，操作简单，并且可以直接用之前介绍的方法绘制\href{http://mp.weixin.qq.com/s?__biz=MzI5MTcwNjA4NQ==\&mid=2247484063\&idx=1\&sn=f4e93d428e4910b4abbee9c0430cd170\&scene=21\#wechat_redirect}{DotPlot}。

另一种方式是不硬筛选差异基因，而是对其根据表达量或与表型的相关度排序，然后判断对应的基因集是否倾向于落在有序列表的顶部或底部，从而判断基因集合对表型差异的影响和筛选有影响的基因子集。这叫\texttt{GSEA}富集分析，注释信息可以是GO，KEGG，也可以是其它任何符合格式的信息。\href{https://mp.weixin.qq.com/s/5ZEuII6ccJZZFdCsj6f3kA}{GSEA富集分析 - 界面操作}详细讲述了GSEA分析的原理、可视化操作和结果解读。

具体原理解释见我们在B站的免费视频：\href{https://www.bilibili.com/video/BV1rD4y1272a}{易生信转录组高级课程系列节选}

\hypertarget{goeastenrichment}{%
\subsection{GOEAST结果绘制富集分析泡泡图}\label{goeastenrichment}}

\hypertarget{goeastsinglegeneset}{%
\subsubsection{单个基因集富集结果展示}\label{goeastsinglegeneset}}

在\href{https://mp.weixin.qq.com/s/l6j2encDfEQkt2UeNCMFhg}{去东方，最好用的在线GO富集分析工具}一文中介绍了一款高引用、操作简单、数据库每周同步更新的在线富集工具GOEAST，很受好评。美中不足的是，这个工具不能输出泡泡图。下面我们展示下如何用GOEAST输出的富集结果表格自行筛选条目绘制富集分析泡泡图。

GOEAST输出的表格内容如下 (\texttt{geneIDs} \texttt{symbols} 列内容较长，此处没用到，故未展示)：

\begin{verbatim}
GOID    Ontology    Term    Level   q   m   t   k   log_odds_ratio  p
GO:0006730  biological_process  one-carbon metabolic process    4   34  57  45240   13378   1.012309306 0.001481151
GO:0007154  biological_process  cell communication  2   2169    6843    45240   13378   0.100137585 0.007326261
GO:0007165  biological_process  signal transduction 5   1955    6136    45240   13378   0.107606604 0.006325629
GO:0023052  biological_process  signaling   1   2100    6613    45240   13378   0.102820905 0.006590727
GO:0044700  biological_process  single organism signaling   2   2100    6613    45240   13378   0.102820905 0.006590727
GO:0050896  biological_process  response to stimulus    1   3251    10438   45240   13378   0.074846633 0.012472089
GO:0005515  molecular_function  protein binding 1   3299    10399   45240   13378   0.101392361 3.32E-05
GO:0005794  cellular_component  Golgi apparatus 6   611 1835    45240   13378   0.171200701 0.057432963
GO:0012505  cellular_component  endomembrane system 2   1521    4648    45240   13378   0.146146563 0.000353056
GO:0071944  cellular_component  cell periphery  2   2059    6559    45240   13378   0.086204434 0.065663723
\end{verbatim}

我们先看下其中几列的含义是什么：

\begin{itemize}
\tightlist
\item
  \texttt{q}: 用于分析的基因集中匹配到该通路的基因数目
\item
  \texttt{m}: 背景基因集中落在该通路的基因数目
\item
  \texttt{t}: 背景基因集中总的基因数目
\item
  \texttt{k}: 用于分析的基因集中总的基因数目
\item
  \texttt{p}: 富集显著性值(FDR，\href{https://mp.weixin.qq.com/s/Kzj_qaI15pT4Gup_rVv1cA}{多重假设检验}校正后的p-value)
\item
  \texttt{log\_odds\_ratio}: 富集比，具体见上面基础部分
\end{itemize}

富集分析泡泡图实际是一种散点图，这个图怎么绘制需要我们先理解这个图每一部分的含义。理解了图，剩下的就是把对应列的信息赋值到图上。

我们先把数据导入平台，选择一些参数，体会下它们在图上的体现和意义。

\begin{center}\includegraphics[width=1\linewidth]{image/goeast_input} \end{center}

然后选择参数

\begin{itemize}
\tightlist
\item
  \texttt{log\_odds\_ratio}列作为横轴(\texttt{X-axis})信息
\item
  \texttt{Term}列作为纵轴(\texttt{Y-axis})信息
\end{itemize}

这两列就确定了点的分布，下面三个参数是给点的属性赋值

\begin{itemize}
\tightlist
\item
  统计显著性\texttt{p}列作为\texttt{Color\ variable}，给每个点根据数值大小进行上色，从颜色上区分富集显著性
\item
  \texttt{q}列用于设置点的大小\texttt{Point\ size\ variable}，点越大表示目标基因集中落在对应通路的基因越多
\item
  \texttt{Neg\ log10\ transform\ variable}是指定哪个变量进行对数转换，这是可选参数，但通常我们会对\texttt{p-value}列做这个转换。转换后越小的\texttt{p-value}值就会变得越大
\end{itemize}

\begin{center}\includegraphics[width=1\linewidth]{image/goeast_parameter1} \end{center}

提交后，获得结果图如下：

\begin{center}\includegraphics[width=1\linewidth]{image/goeast_parameterView1} \end{center}

图中每个点代表一个富集的条目，在\texttt{Y}轴有对应标记。这些条目按其\texttt{log\_odds\_ratio}的值排序后展示，\texttt{log\_odds\_ratio}高的条目在Y轴上方展示；每个点的大小代表用于分析的基因集中匹配到该通路的基因数目，颜色代表富集程度。

但这个图中，点的大小有些太分散，颜色是绿色饱和度越高表示富集越显著，可能跟常规认知不同。修改两个参数：

\begin{itemize}
\tightlist
\item
  \texttt{Variable\ for\ be\ transformed\ in\ square\ root\ way}选择\texttt{q}，通过平方根降低数据之间的差距
\item
  设置颜色 \texttt{Manual\ color\ vector\ (color\ set)}为\texttt{OrRd}
\end{itemize}

\begin{center}\includegraphics[width=1\linewidth]{image/goeastParameter2} \end{center}

获得结果如下

\begin{center}\includegraphics[width=1\linewidth]{image/goeastParameter2view} \end{center}

\hypertarget{goeastmultiplegeneset}{%
\subsubsection{多个基因集富集结果展示}\label{goeastmultiplegeneset}}

通常我们会同时对多个基因集分别进行富集分析，结果放在一起展示。这时我们需要在富集结果后面加一列，标记该结果是哪个基因集的富集，在\texttt{Excel}中可以很方便地操作。如下面动图所示，分组的名字自己根据实际取名即可。

\begin{center}\includegraphics[width=1\linewidth]{image/goeastmultipleGroup} \end{center}

有了这个多组基因富集后整合起来的数据，就可以用BIC绘图了。数据粘贴就不展示了，直接看参数选择。

与单组富集结果相比，最大的改动就在：

\begin{itemize}
\tightlist
\item
  新增的\texttt{Group}列而非 \texttt{log\_odds\_ratio}列作为横轴(\texttt{X-axis})信息
\end{itemize}

\begin{center}\includegraphics[width=1\linewidth]{image/goeastmultipleGroupParameter1} \end{center}

提交后获得结果。图中每个点代表一个富集的条目，在\texttt{Y}轴有对应标记。每一列是一组基因的富集结果。三组共有的富集在最上面，2组共有的富集在中间，每组特有的富集在底部。每个点的大小代表用于分析的基因集中匹配到该通路的基因数目，颜色代表富集程度。

\begin{center}\includegraphics[width=1\linewidth]{image/goeastmultipleGroupView1} \end{center}

如果希望在显示多组时，依然保留\texttt{log\_odds\_ratio}的信息，也可以。

这里换一套数据更好展示(因为Group2、Group3是模拟数据，直接从Group1中抽取出来的，所以绘制出来会存在重叠)

\begin{verbatim}
GOID    Ontology    Term    Level   q   m   t   k   log_odds_ratio  p   Group
GO:0006730  biological_process  one-carbon metabolic process    4   340 57  45240   13378   1.012309306 0.001481151 Group1
GO:0007154  biological_process  cell communication  2   2169    6843    45240   13378   0.100137585 0.007326261 Group1
GO:0007165  biological_process  signal transduction 5   1955    6136    45240   13378   0.107606604 0.006325629 Group1
GO:0023052  biological_process  signaling   1   2100    6613    45240   13378   0.102820905 0.006590727 Group1
GO:0044700  biological_process  single organism signaling   2   2100    6613    45240   13378   0.102820905 0.006590727 Group1
GO:0050896  biological_process  response to stimulus    1   3251    10438   45240   13378   0.074846633 0.012472089 Group1
GO:0006730  biological_process  one-carbon metabolic process    4   340 57  45240   13378   1.212309306 0.001481151 Group2
GO:0007154  biological_process  cell communication  2   2169    6843    45240   13378   0.200137585 0.007326261 Group2
GO:0007165  biological_process  signal transduction 5   1955    6136    45240   13378   0.207606604 0.006325629 Group2
GO:0023052  biological_process  signaling   1   2100    6613    45240   13378   0.302820905 0.006590727 Group2
GO:0007165  biological_process  signal transduction 5   1955    6136    45240   13378   0.307606604 0.006325629 Group3
GO:0023052  biological_process  signaling   1   2100    6613    45240   13378   0.202820905 0.006590727 Group3
\end{verbatim}

\begin{itemize}
\tightlist
\item
  \texttt{log\_odds\_ratio}列依然作为横轴(\texttt{X-axis})信息
\item
  新增的\texttt{Group}列作为\texttt{Shape\ variable}，用不同的形状表示不同的组
\item
  \texttt{Shape\ variable\ order}是可选项，调节组的顺序，默认不填写或按需设置都可
\item
  修改下颜色，用\texttt{colorPicker}设置，前面工具有介绍
\end{itemize}

\begin{center}\includegraphics[width=1\linewidth]{image/goeastmultipleGroupParameter2} \end{center}

提交后获得结果。图中每个点代表一个富集的条目，在\texttt{Y}轴有对应标记。这些条目按其\texttt{log\_odds\_ratio}的值排序后展示，\texttt{log\_odds\_ratio}高的条目在Y轴上方展示；每个点的大小代表用于分析的基因集中匹配到该通路的基因数目，颜色代表富集程度。点的形状则代表其所属的组信息。

\begin{center}\includegraphics[width=1\linewidth]{image/goeastmultipleGroupView2} \end{center}

但是这个图出现了一个问题，图例显示不全。最简单的解决办法就是把图的宽度和高度调大。

\begin{center}\includegraphics[width=1\linewidth]{image/goeastEnlarge} \end{center}

结果就正常了，可以下载PDF版、PPT版（如果选了参数）和对应的R代码

\begin{center}\includegraphics[width=1\linewidth]{image/goeastEnlargeView} \end{center}

\hypertarget{govenn}{%
\subsubsection{Venn网络展示富集结果}\label{govenn}}

前面讲述了富集分析泡泡图的绘制，富集分析结果也可以用网络形式同时展示富集的条目以及对应的基因。

首先看下示例数据，列数可多可少，这里只用到\texttt{Description}列和\texttt{geneID}列。

\begin{verbatim}
ID  Description GeneRatio   BgRatio pvalue  p.adjust    qvalue  geneID  Count   Group
HALLMARK_TNFA_SIGNALING_VIA_NFKB    HALLMARK_TNFA_SIGNALING_VIA_NFKB    26/156  200/4386    4.45471795944512e-09    2.09371744093921e-07    1.82877895177221e-07    PER1/DUSP1/IRS2/KLF9/CEBPD/DNAJB4/CFLAR/GADD45B/PDLIM5/SAT1/TSC22D1/KLF6/RHOB/MAFF/PTX3/NR4A3/MAP3K8/GCH1/NFIL3/CYR61/NR4A1/DUSP5/ATF3/GFPT2/RCAN1/PTPRE    26  trt._higherThan_.untrt
HALLMARK_EPITHELIAL_MESENCHYMAL_TRANSITION  HALLMARK_EPITHELIAL_MESENCHYMAL_TRANSITION  18/156  200/4386    0.000216131430625001    0.00507908861968753 0.0044363819970395  NNMT/FZD8/GADD45B/SAT1/COL7A1/LAMA2/THBS1/RHOB/PTX3/COL4A1/ANPEP/FSTL3/CYR61/COL11A1/LAMA3/ACTA2/TAGLN/FBN2 18  trt._higherThan_.untrt
HALLMARK_HYPOXIA    HALLMARK_HYPOXIA    17/156  200/4386    0.000638557923391064    0.0100040741331267  0.00873816105693035 DUSP1/MT2A/ERRFI1/IRS2/MT1E/FOXO3/SAP30/KLF6/GLRX/MAFF/UGP2/CITED2/NFIL3/CYR61/ATF3/STC1/GCNT2  17  trt._higherThan_.untrt
HALLMARK_P53_PATHWAY    HALLMARK_P53_PATHWAY    16/156  200/4386    0.00176676135024713 0.0207594458654038  0.0181325506999047  STOM/ZBTB16/ABAT/ALOX15B/DCXR/FOXO3/SAT1/TSC22D1/CCND3/INHBB/TM4SF1/ATF3/CD82/PDGFA/SLC19A2/PTPRE   16  trt._higherThan_.untrt
HALLMARK_UV_RESPONSE_DN HALLMARK_UV_RESPONSE_DN 12/156  144/4386    0.00478020785355157 0.0449339538233847  0.0392480223765287  DUSP1/APBB2/MT1E/ANXA4/TGFBR2/PDLIM5/AMPH/CITED2/CYR61/COL11A1/DDAH1/PPARG  12  trt._higherThan_.untrt
HALLMARK_ANDROGEN_RESPONSE  HALLMARK_ANDROGEN_RESPONSE  9/156   101/4386    0.00920383270379172 0.0720966895130351  0.0629735921838381  FKBP5/ADAMTS1/PDLIM5/SAT1/TSC22D1/CCND3/STEAP4/SLC38A2/PTK2B    9   trt._higherThan_.untrt
\end{verbatim}

采用\texttt{BIC}的工具\texttt{Explode\ matrix} (\url{http://www.ehbio.com/Cloud_Platform/front/\#/analysis?page=b\%27NDI\%3D\%27})对矩阵进行转换，把\texttt{geneID}列的基因按行拆分开：

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  设置\texttt{geneID}列为\texttt{Column\ for\ exploding}
\item
  设置\texttt{/}为\texttt{Item\ separtor\ in\ exploding\ column}
\item
  设置只保留\texttt{geneID}和\texttt{Description}列，且\texttt{geneID}列在前 (\texttt{Specify\ columns\ to\ be\ included\ in\ final\ matrix})
\end{enumerate}

\begin{center}\includegraphics[width=1\linewidth]{image/explode_matrix_input} \end{center}

点击提交，下载结果（如果结果直接在浏览器打开了，则\textbf{右键另存为}下载）

\begin{center}\includegraphics[width=1\linewidth]{image/explode_matrix_output} \end{center}

获得转换后的数据格式如下 (两列文件，基因和其对应的富集条目)：

\begin{verbatim}
geneID  Description
PER1    HALLMARK_TNFA_SIGNALING_VIA_NFKB
DUSP1   HALLMARK_TNFA_SIGNALING_VIA_NFKB
IRS2    HALLMARK_TNFA_SIGNALING_VIA_NFKB
KLF9    HALLMARK_TNFA_SIGNALING_VIA_NFKB
CEBPD   HALLMARK_TNFA_SIGNALING_VIA_NFKB
DNAJB4  HALLMARK_TNFA_SIGNALING_VIA_NFKB
CFLAR   HALLMARK_TNFA_SIGNALING_VIA_NFKB
GADD45B HALLMARK_TNFA_SIGNALING_VIA_NFKB
PDLIM5  HALLMARK_TNFA_SIGNALING_VIA_NFKB
SAT1    HALLMARK_TNFA_SIGNALING_VIA_NFKB
TSC22D1 HALLMARK_TNFA_SIGNALING_VIA_NFKB
KLF6    HALLMARK_TNFA_SIGNALING_VIA_NFKB
RHOB    HALLMARK_TNFA_SIGNALING_VIA_NFKB
MAFF    HALLMARK_TNFA_SIGNALING_VIA_NFKB
PTX3    HALLMARK_TNFA_SIGNALING_VIA_NFKB
NR4A3   HALLMARK_TNFA_SIGNALING_VIA_NFKB
MAP3K8  HALLMARK_TNFA_SIGNALING_VIA_NFKB
GCH1    HALLMARK_TNFA_SIGNALING_VIA_NFKB
NFIL3   HALLMARK_TNFA_SIGNALING_VIA_NFKB
CYR61   HALLMARK_TNFA_SIGNALING_VIA_NFKB
NR4A1   HALLMARK_TNFA_SIGNALING_VIA_NFKB
DUSP5   HALLMARK_TNFA_SIGNALING_VIA_NFKB
ATF3    HALLMARK_TNFA_SIGNALING_VIA_NFKB
GFPT2   HALLMARK_TNFA_SIGNALING_VIA_NFKB
RCAN1   HALLMARK_TNFA_SIGNALING_VIA_NFKB
PTPRE   HALLMARK_TNFA_SIGNALING_VIA_NFKB
NNMT    HALLMARK_EPITHELIAL_MESENCHYMAL_TRANSITION
FZD8    HALLMARK_EPITHELIAL_MESENCHYMAL_TRANSITION
GADD45B HALLMARK_EPITHELIAL_MESENCHYMAL_TRANSITION
SAT1    HALLMARK_EPITHELIAL_MESENCHYMAL_TRANSITION
COL7A1  HALLMARK_EPITHELIAL_MESENCHYMAL_TRANSITION
LAMA2   HALLMARK_EPITHELIAL_MESENCHYMAL_TRANSITION
THBS1   HALLMARK_EPITHELIAL_MESENCHYMAL_TRANSITION
RHOB    HALLMARK_EPITHELIAL_MESENCHYMAL_TRANSITION
PTX3    HALLMARK_EPITHELIAL_MESENCHYMAL_TRANSITION
COL4A1  HALLMARK_EPITHELIAL_MESENCHYMAL_TRANSITION
ANPEP   HALLMARK_EPITHELIAL_MESENCHYMAL_TRANSITION
FSTL3   HALLMARK_EPITHELIAL_MESENCHYMAL_TRANSITION
CYR61   HALLMARK_EPITHELIAL_MESENCHYMAL_TRANSITION
COL11A1 HALLMARK_EPITHELIAL_MESENCHYMAL_TRANSITION
LAMA3   HALLMARK_EPITHELIAL_MESENCHYMAL_TRANSITION
ACTA2   HALLMARK_EPITHELIAL_MESENCHYMAL_TRANSITION
TAGLN   HALLMARK_EPITHELIAL_MESENCHYMAL_TRANSITION
FBN2    HALLMARK_EPITHELIAL_MESENCHYMAL_TRANSITION
DUSP1   HALLMARK_HYPOXIA
MT2A    HALLMARK_HYPOXIA
ERRFI1  HALLMARK_HYPOXIA
IRS2    HALLMARK_HYPOXIA
MT1E    HALLMARK_HYPOXIA
FOXO3   HALLMARK_HYPOXIA
SAP30   HALLMARK_HYPOXIA
KLF6    HALLMARK_HYPOXIA
GLRX    HALLMARK_HYPOXIA
MAFF    HALLMARK_HYPOXIA
UGP2    HALLMARK_HYPOXIA
CITED2  HALLMARK_HYPOXIA
NFIL3   HALLMARK_HYPOXIA
CYR61   HALLMARK_HYPOXIA
ATF3    HALLMARK_HYPOXIA
STC1    HALLMARK_HYPOXIA
GCNT2   HALLMARK_HYPOXIA
STOM    HALLMARK_P53_PATHWAY
ZBTB16  HALLMARK_P53_PATHWAY
ABAT    HALLMARK_P53_PATHWAY
ALOX15B HALLMARK_P53_PATHWAY
DCXR    HALLMARK_P53_PATHWAY
FOXO3   HALLMARK_P53_PATHWAY
SAT1    HALLMARK_P53_PATHWAY
TSC22D1 HALLMARK_P53_PATHWAY
CCND3   HALLMARK_P53_PATHWAY
INHBB   HALLMARK_P53_PATHWAY
TM4SF1  HALLMARK_P53_PATHWAY
ATF3    HALLMARK_P53_PATHWAY
CD82    HALLMARK_P53_PATHWAY
PDGFA   HALLMARK_P53_PATHWAY
SLC19A2 HALLMARK_P53_PATHWAY
PTPRE   HALLMARK_P53_PATHWAY
DUSP1   HALLMARK_UV_RESPONSE_DN
APBB2   HALLMARK_UV_RESPONSE_DN
MT1E    HALLMARK_UV_RESPONSE_DN
ANXA4   HALLMARK_UV_RESPONSE_DN
TGFBR2  HALLMARK_UV_RESPONSE_DN
PDLIM5  HALLMARK_UV_RESPONSE_DN
AMPH    HALLMARK_UV_RESPONSE_DN
CITED2  HALLMARK_UV_RESPONSE_DN
CYR61   HALLMARK_UV_RESPONSE_DN
COL11A1 HALLMARK_UV_RESPONSE_DN
DDAH1   HALLMARK_UV_RESPONSE_DN
PPARG   HALLMARK_UV_RESPONSE_DN
FKBP5   HALLMARK_ANDROGEN_RESPONSE
ADAMTS1 HALLMARK_ANDROGEN_RESPONSE
PDLIM5  HALLMARK_ANDROGEN_RESPONSE
SAT1    HALLMARK_ANDROGEN_RESPONSE
TSC22D1 HALLMARK_ANDROGEN_RESPONSE
CCND3   HALLMARK_ANDROGEN_RESPONSE
STEAP4  HALLMARK_ANDROGEN_RESPONSE
SLC38A2 HALLMARK_ANDROGEN_RESPONSE
PTK2B   HALLMARK_ANDROGEN_RESPONSE
\end{verbatim}

把这个文件粘贴到最全Venn图绘制工具\texttt{Evenn} (\url{http://www.ehbio.com/test/venn/\#/}，更多功能见网站帮助)的\texttt{Venn\ network}处，直接点击\texttt{submit}。

\begin{center}\includegraphics[width=1\linewidth]{image/GOVennNetwork} \end{center}

点击提交后，直接出来一张网络图

\begin{center}\includegraphics[width=1\linewidth]{image/GOVennNetwork2} \end{center}

点击\texttt{Preferred\ layout}按钮，看动画，调布局 (具体操作可查看\texttt{EVenn}的\texttt{Help}帮助文档和对应的视频)。

\begin{center}\includegraphics[width=1\linewidth]{image/GOVennNetwork3} \end{center}

\hypertarget{pcoa}{%
\section{PCoA分析}\label{pcoa}}

\href{https://mp.weixin.qq.com/s/v8gbmaFwkrDCe9EeJeNABA}{一文学会PCA/PCoA相关统计检验(PERMANOVA)和可视化}详细论述了PERMANOVA 检验（也包括最基本的方差检验基础），PERMANOVA检验的问题，并提供了代码生成 PCoA+统计结果。

下面我们看下如何在线完成这个操作。

\hypertarget{pcoainputdata}{%
\subsection{输入数据}\label{pcoainputdata}}

输入数据支持 2 种，一种是标准化后的 OTU 表(\href{https://mp.weixin.qq.com/s/_zmBNNH_lNaKXPlvkxUftw}{太愁了！这个分析需要哪种数据？原始count？标准化？抽平？FPKM？TPM？})，一种是计算好的距离矩阵。

\hypertarget{pcoainputotu}{%
\subsubsection{OTU 表}\label{pcoainputotu}}

每一行为一个\texttt{OTU}，每一列为一个样品。

\begin{verbatim}
ID  Sample1 Sample2 Sample3 Sample4 Sample5 Sample6 Sample7 Sample8 Sample9 Sample10    Sample11    Sample12    Sample13    Sample14    Sample15    Sample16    Sample17    Sample18    Sample19    Sample20
OTU_1   1   3   0   0   2   2   2   0   0   4   0   0   0   0   0   0   2   0   0   0
OTU_2   0   0   4   8   0   0   0   4   3   0   0   4   5   4   4   7   0   0   0   5
OTU_3   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   2   0   3   0
OTU_4   0   2   7   2   0   0   0   5   3   0   0   8   5   0   0   4   0   0   0   0
\end{verbatim}

如果给定 OTU 表，还可以进一步选择数据归一化方式、距离计算算法和是否加权等。

\begin{center}\includegraphics[width=1\linewidth]{image/pcoa_distance_parameter} \end{center}

\hypertarget{pcoainputdist}{%
\subsubsection{距离矩阵}\label{pcoainputdist}}

每一行和每一列都是样品之间的距离。

\begin{verbatim}
bray_curtis KO1 KO2 KO3 KO4 KO5 KO6 OE1 OE2 OE3 OE4 OE5 OE6 WT1 WT2 WT3 WT4 WT5 WT6
KO1 0   0.282   0.317   0.267   0.332   0.253   0.327   0.357   0.319   0.288   0.292   0.311   0.310   0.319   0.301   0.311   0.326   0.283
KO2 0.282   0   0.355   0.338   0.432   0.308   0.331   0.331   0.332   0.326   0.297   0.325   0.298   0.339   0.283   0.295   0.342   0.295
KO3 0.317   0.355   0   0.314   0.331   0.316   0.422   0.398   0.357   0.355   0.358   0.407   0.375   0.364   0.365   0.351   0.355   0.324
KO4 0.267   0.338   0.314   0   0.325   0.262   0.397   0.401   0.347   0.334   0.332   0.386   0.333   0.335   0.347   0.344   0.337   0.323
\end{verbatim}

\hypertarget{metadata}{%
\subsubsection{实验设计信息}\label{metadata}}

至少 2 列，第一列为样本名字，系统会检测与数据表是否一致；第二列为样本属性，一般是分组信息。在线平台设置了该信息为必选项。

\begin{verbatim}
ID  A1  Moisture    Management  Use Manure
Sample1 2.8 1   SF  Haypastu    4
Sample2 3.5 1   BF  Haypastu    2
Sample3 4.3 2   SF  Haypastu    4
Sample4 4.2 2   SF  Haypastu    4
\end{verbatim}

\hypertarget{pcoaessentialparameter}{%
\subsection{必选参数}\label{pcoaessentialparameter}}

把数据粘贴或上传后，点击\texttt{Check\ data}核对数据是否有问题。

为了避免一般性错误，在线平台设置了一个必选项\texttt{Color\ variable}。该选项有 2 个用途：

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  设置样本点的颜色
\item
  设置样本点的分组信息 (如果 \texttt{Group\ variable}没设置的情况下)
\end{enumerate}

之所以这么设计，是习惯上样本点的颜色属性一般等同于分组属性。

\hypertarget{aestheticpcoa}{%
\subsection{美化参数、统计参数}\label{aestheticpcoa}}

与其它工具类似，不再赘述。

\hypertarget{pcoaresult}{%
\subsection{查看结果}\label{pcoaresult}}

\begin{center}\includegraphics[width=1\linewidth]{image/pcoaResult} \end{center}

\hypertarget{limma}{%
\section{limma 差异分析}\label{limma}}

差异基因表达是芯片、转录组分析的基本内容。R中的limma包 \url{https://bioconductor.org/packages/release/bioc/html/limma.html}是芯片差异分析的\textbf{金标准}，其优化后的\texttt{limma-voom}可用于处理转录组的\texttt{reads-count}数据。在后续的评估中，其鉴定差异基因的效果如果不说比\texttt{edgeR}, \texttt{DESEq2}好，也是结果相当。其作者 Gordon K Smyth长期活跃于Bioconductor的论坛里面。解读差异分析相关问题。

\begin{figure}

{\centering \includegraphics[width=1\linewidth]{image/limma_voom_genome_biology} 

}

\caption{https://genomebiology.biomedcentral.com/articles/10.1186/gb-2014-15-2-r29}\label{fig:unnamed-chunk-96}
\end{figure}

\begin{figure}

{\centering \includegraphics[width=1\linewidth]{image/limma_voom_figure4} 

}

\caption{Power to detect true differential expression. (From voom: precision weights unlock linear model analysis tools for RNA-seq read counts)}\label{fig:unnamed-chunk-97}
\end{figure}

在\href{http://mp.weixin.qq.com/s/NUEi6oRFL7B3f1FpCD4Xug}{39个转录组分析工具，120种组合评估(转录组分析工具哪家强-导读版)}中，\texttt{limma}表现与\texttt{DESeq2}和\texttt{edgeR}相近。

limma还有4个优势：

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  处理速度快。
\item
  支持芯片数据。
\item
  (不推荐) 也支持转录组的TPM、FPKM数据 (虽然不推荐，若拿不到reads-count数据，也只能将就着用)。
\item
  支持复杂设计。
\end{enumerate}

\hypertarget{limma_reads_counts_normal}{%
\subsection{limma用于转录组reads-count数据差异基因分析}\label{limma_reads_counts_normal}}

做转录组差异分析，我们通常是基于\texttt{reads-count}数据，这个数据可以来源于\texttt{Salmon}的结果、\texttt{STAR}的结果或从网上下载的数据。

这个数据怎么获取，具体见下方的教程。

\begin{itemize}
\tightlist
\item
  \href{https://mp.weixin.qq.com/s/F_m7tinYS3i_Hn7oWmWGgQ}{基于Salmon的转录组批量定量流程和差异分析}
\item
  \href{https://mp.weixin.qq.com/s/OJ1MpHhW08BcZSjMvFs3eg}{STAR直接就可以输出readsCount，为什么还需要featurecounts？}
\item
  \href{https://mp.weixin.qq.com/s/l3JL8KBk-nivpwz3mC_jtQ}{利用R代码从UCSC XENA下载mRNA, lncRNA, miRNA表达数据并匹配临床信息}
\end{itemize}

\hypertarget{limma_reads_counts_normal-readscounts}{%
\subsubsection{输入数据1： reads-count数据}\label{limma_reads_counts_normal-readscounts}}

现在假如我们已经拿到了8个样品的\texttt{reads-count}数据。点击下载\href{data/ehbio_trans.Count_matrix.txt}{ehbio\_trans.Count\_matrix.txt}。

这是\texttt{TAB}键分割的文本文件：

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  第一列是基因名字，基因名可以是\texttt{ENSEMBL\ ID}、\texttt{Gene\ symbol}或任意其它\texttt{ID}，但不允许有重复的名字。
\item
  第一行除第一列\texttt{ENSG} (第一列的名字可以是任意字符，不影响)外，其它列都是样本名字。样本名字建议只包括\texttt{数字}，\texttt{字母}和\texttt{下划线}。尤其是不能有\texttt{-}，不能以数字开头，最好\texttt{下划线}都不要有。
\item
  数据矩阵中的其它内容都是整数。
\item
  从第二行起，每一行代表一个基因在每个样品里面的原始\texttt{reads-count}值。
\end{enumerate}

\begin{verbatim}
##                 untrt_N61311 untrt_N052611 untrt_N080611 untrt_N061011
## ENSG00000227232           13            25            23            24
## ENSG00000278267            0             5             3             4
## ENSG00000241860            3            11             1             5
## ENSG00000279457           46            90            73            49
## ENSG00000228463            5             4            13             6
## ENSG00000237094            0            16             7             2
##                 trt_N61311 trt_N052611 trt_N080611 trt_N061011
## ENSG00000227232         12          12          22          22
## ENSG00000278267          2           4           3           1
## ENSG00000241860          3           2           0           2
## ENSG00000279457         52          46          89          31
## ENSG00000228463          5           0          11           4
## ENSG00000237094          1           3           3           2
\end{verbatim}

\hypertarget{limma_reads_counts_normal-samplefile}{%
\subsubsection{输入数据2：样本分组信息 (sampleFile)}\label{limma_reads_counts_normal-samplefile}}

既然做差异基因分析，通常是2组或多组之间的比较。如果是多组，也是两两组之间的组合比较。在上面的\texttt{reads-count}矩阵中只有样本名称，但不知道哪些样本是来源于一个生物处理组的，如对照组或处理组等。所以需要提供这样一个文件，指示样本的属性信息，如所属组信息。这里有一个示例数据，\href{data/sampleFile2.txt}{sampleFile2.txt}:

\begin{verbatim}
##               conditions individual sizeFactor    SV1    SV2    SV3
## untrt_N61311       untrt     N61311  1.0211325 -0.101 -0.494 -0.316
## untrt_N052611      untrt    N052611  1.1803986  0.018 -0.170  0.588
## untrt_N080611      untrt    N080611  1.1796083 -0.429  0.376 -0.089
## untrt_N061011      untrt    N061011  0.9232642  0.535  0.241 -0.176
## trt_N61311           trt     N61311  0.8939275 -0.125 -0.496 -0.366
## trt_N052611          trt    N052611  0.6709229  0.036 -0.151  0.591
\end{verbatim}

需要注意的有一下几点：

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  样本分组信息\texttt{sampleFile}文件至少需要有\texttt{2}列。
\item
  第一列表示样本名字，需要与\texttt{reads-count}文件中的第一行中的样本名字能对应上。顺序没有关系。大小写要一致。比如在\texttt{sampleFile}中样本名写做\texttt{untrt\_N61311}，而在\texttt{reas-count}文件中写做\texttt{UNtrt\_N61311}或\texttt{untrt\ N61311}，大小写不一致是不对的。一定注意是完全一致。
\item
  第二列表示样本分组信息。示例中前4个文件属于\texttt{untrt}组，后4个文件属于\texttt{trt}组。一个组的样本不要求必须挨着。样本的组名不要有除\texttt{数字}，\texttt{字母}和\texttt{下划线}之外的字符。
\item
  其它列都是样本的属性信息，可有可无。有时也会用到，后面会有例子演示。
\end{enumerate}

\hypertarget{limma_reads_counts_normal-parameter}{%
\subsubsection{导入数据，设置参数}\label{limma_reads_counts_normal-parameter}}

表达矩阵通常比较大，在1M左右或更大，直接粘贴进入浏览器的文本域会导致浏览器变卡。这不是网站速度慢的问题，是浏览器自身问题，不适合承载太大的数据。这里建议用上传的方式，免费注册一个账户，按下图所示上传数据。

\begin{center}\includegraphics[width=1\linewidth]{image/personal_center_file_upload} \end{center}

数据上传好之后，需要刷新工具页面，才可以看到新上传的数据。选择相应的数据，如下图

\begin{center}\includegraphics[width=1\linewidth]{image/limma_normal_input} \end{center}

依次设置参数：

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  \texttt{Input\ way}设置为\texttt{Select\ uploaded\ file}
\item
  \texttt{Upload\ main\ expression\ data\ (Gene\ X\ Sample)}选择上传的\texttt{reads-count}文件
\item
  \texttt{Select\ sample\ attributes\ file\ (first\ column\ must\ match\ first\ row\ of\ expression\ data\ matrix)}选择上传的\texttt{sampleFile2.txt}文件
\item
  选择\texttt{Expression\ data\ type}为\texttt{Raw\ reads\ count}
\item
  选择\texttt{Group}为\texttt{conditions} (sampleFile2.txt中表示分组的列)
\end{enumerate}

\begin{center}\includegraphics[width=1\linewidth]{image/limma_normal_input_parameter} \end{center}

其它参数可以暂时先不管。

点击提交，获得结果。

\hypertarget{limma_reads_counts_normalresult}{%
\subsubsection{差异分析结果报告}\label{limma_reads_counts_normalresult}}

默认输出一个结果文档，\texttt{1}个大章节，\texttt{2}个小章节，分别是整体丰度图谱比较和差异分析结果。点击各个子章节可以展开查看具体内容。

\begin{center}\includegraphics[width=1\linewidth]{image/limma_result_1} \end{center}

\hypertarget{limma_reads_counts_normalresultheatmappca}{%
\subsubsection{1.1 所有样品丰度图谱展示 (聚类热图和PCA)}\label{limma_reads_counts_normalresultheatmappca}}

1.1.1 是样品表达图谱聚类热图，一幅下三角热图，一幅交互式热图。展示样本之间的相似性关系。标准化后的表达值也可从这下载。该工具主要定位是差异分析，可视化也有一些，不过都不能调整参数。如果需要进一步可视化，可以基于这里提供的表达数据，通过BIC的其它工具进行进一步可视化分析。后面我们会讲到。

\textbackslash begin\{figure\}

\{\centering \includegraphics[width=1\linewidth]{image/limma_normal_result_heatmap}

\}

\textbackslash caption\{ref:heatmap\_tuiwen\}\label{fig:unnamed-chunk-104}
\textbackslash end\{figure\}

1.1.2 是样本表达图谱的PCA图谱绘制（静态图和交互图），在PC1轴上样品按处理和对照分成2簇，在PC2轴上，样品的分布与个体来源相关（这里是一个信号，我们后面会提到，感兴趣的可以先看下\href{https://mp.weixin.qq.com/s/xLSKGRTRqZkzF-Gn6gekpQ}{高通量数据中批次效应的鉴定和处理 - 系列总结和更新}）。默认出图不太美观，数据可以下载下来，用我们的PCoA工具进行进一步绘制。

\textbackslash begin\{figure\}

\{\centering \includegraphics[width=1\linewidth]{image/limma_normal_result_pca}

\}

\textbackslash caption\{ref:pca\_tuiwen\}\label{fig:unnamed-chunk-105}
\textbackslash end\{figure\}

\hypertarget{limma_reads_counts_normalresultDE}{%
\paragraph{1.2 差异分析结果}\label{limma_reads_counts_normalresultDE}}

因为只有一个比较组，所以只有1.2.1的结果；如果有多个比较组，还会有\texttt{1.2.2\ DE\ analysis\ results\ (A\ vs\ B)}, \texttt{1.2.3\ DE\ analysis\ results\ (A\ vs\ C)}等。

主要展现的是交互式差异火山图，鼠标悬浮可直接查看差异基因。 火山图的数据也可以拿下来用BIC绘图平台定制绘制。



\begin{figure}

{\centering \includegraphics[width=1\linewidth]{image/limma_normal_result_interactive_volcano} 

}

\caption{\href{https://mp.weixin.qq.com/s/TZDCFgBKu_G4gTMrK1rqIQ}{Volcano plot \textbar{} 别再问我这为什么是火山图}}\label{fig:unnamed-chunk-106}
\end{figure}

差异分析的表格数据可下载用于进一步地分析和可视化。如下包括绘制火山图的数据、上调基因的表达矩阵、下调基因的表达矩阵、差异基因的列表等。

\begin{center}\includegraphics[width=1\linewidth]{image/limma_normal_result_filedownload} \end{center}

\hypertarget{waiting-for-modification}{%
\section{Waiting for modification}\label{waiting-for-modification}}

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
  \sout{boxplot的宽矩阵格式调整或去掉}
\item
  \sout{volcano的status variable order增加placeholder或改名；增加一个输入框，标记基因}
\item
  pheatmap图例过长超出图形下边界
\end{enumerate}






\end{document}
